//
//  HomeTableViewController.swift
//  Weibo
//
//  Created by 付启刚 on 15/12/12.
//  Copyright © 2015年 faq. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD
private let HomeCellId="HomeCellId"
class HomeTableViewController: BaseTableViewController {
    private lazy var statuses = [Status]()
    //添加自定义下拉刷新空间
    private lazy var refreshView: WBRefreshControl = WBRefreshControl()
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin{
            visitorLoginView?.setupInfo("登录后，别人评论你的微博，发给你的消息，都会在这里收到通知", imageName: nil)
                return
        }
        loadData()
        prepareTableView()
    }
    //注册Cell
    private func prepareTableView() {
        //1.注册cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        
        //修改tableView固定高度
        //希望 tableView能够自动计算行高  需要设置两个关键的属性
        //1.设置预估行高  尽量的接近真实的行高 能够提高效率
        //tabelView能够自动计算行高 关键条件之一 就是 contentView必须添加约束
        tableView.estimatedRowHeight = 300
        //2.设置自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //设置分割线的样式
        tableView.separatorStyle = .None
        //设置系统刷新
        //refreshControl=UIRefreshControl()
        tableView.addSubview(refreshView)
//        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        refreshView.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        tableView.tableFooterView=indicatorView
    }
  @objc private func loadData(){
        var max_id:Int64=0
        var since_id:Int64=0
        if indicatorView.isAnimating(){
         max_id=statuses.last?.id ?? 0
        }else{
         since_id=statuses.first?.id ?? 0
        }
        
        StatusListViewModel.loadHomePageData(since_id, max_id: max_id) { (statuses) -> () in
            //网络加载结束 关闭动画
            self.refreshView.endRefreshing()
//            self.refreshControl?.endRefreshing()
            guard let list = statuses else {
                return
            }
            if since_id>0{
                //下拉刷新 新数据的操作  执行添加的操作
            self.statuses=list+self.statuses
            }else if max_id>0{
            self.statuses+=list
                self.indicatorView.stopAnimating()
            }else{
                self.statuses=list
            }
            self.tableView.reloadData()

        }
 }
    private lazy var indicatorView: UIActivityIndicatorView={
    let i=UIActivityIndicatorView(activityIndicatorStyle: .Gray)
        //开始动画
//        i.startAnimating()
        return i
      
    }()
}
extension HomeTableViewController{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell=tableView .dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath)as! StatusCell
        //        cell.textLabel?.text=statuses[indexPath.row].user?.name
        cell.status=statuses[indexPath.row]
        if !indicatorView.isAnimating() && indexPath.row == statuses.count - 1{
            //滑到最后一行并且 小菊花 没有转动的情况下  自动加载数据
            //在加载数据之前 转动小菊花
            indicatorView.startAnimating()
            loadData()
        }

        return cell
    }
}